<?php

class Tecnico_tipo_servicio_model extends Base_model
{
	const TABLA = "tecnico_tipo_servicio";
	
	var $id;
	var $tecnico_fk;
	var $tipo_servicio_fk;
	var $precio_hora;
	
	function __construct()
	{
		parent::__construct();
	}
	
/** Inserta un registro */
	function insert()
	{
		$this->db->insert(Tecnico_tipo_servicio_model::TABLA, $this->to_array());
		return $this->db->getInsertId();
	}
	
	/** Actualiza el registro */
	function update()
	{
		$this->db->where('id', $this->id);
		$this->db->update(Tecnico_tipo_servicio_model::TABLA, $this->to_array());
	}
	
	/** Elimina el registro de la BD */ 
	function delete($id)
	{
		$this->db->where('id', $id);
		$this->db->delete();
	}
	
	/** Retorna el objeto correspondiente con el identificador */
	function get($id)
	{
		$this->db->where('id', $id);
		$results = $this->db->get(Tecnico_tipo_servicio_model::TABLA);
		return sizeof($results) > 0 ? $results[0] : false;
	}
	
	/** Retorna el objeto por tecnico y tipo de servicio */
	function getByTecnicoYTipoServicio($tecnico_fk, $tipo_servicio_fk)
	{
		$this->db->where('tecnico_fk', $tecnico_fk);
		$this->db->where('tipo_servicio_fk', $tipo_servicio_fk);
		$results = $this->db->get(Tecnico_tipo_servicio_model::TABLA);
		return sizeof($results) > 0 ? $results[0] : false;
	}
	
	function getByTipoServicioFk($tipo_servicio_fk)
	{
		$this->db->where('tipo_servicio_fk', $tipo_servicio_fk);
		$results = $this->db->get(Tecnico_tipo_servicio_model::TABLA);
		return sizeof($results) > 0 ? $results[0] : false;
	}
	
	/** Retorna todos los objetos */
	function getAll()
	{
		return $this->db->get(Tecnico_tipo_servicio_model::TABLA);		
	}
	
	/** Retorna todos los tecnicos segun el servicio pedido*/
	function getTecnicosByTipoYNombre($tipo_servicio_fk, $nombre_tecnico)
	{		
		$query = "select tecnico.*, tipo_servicio.nombre nombre_tipo_servicio, tts.id tts_id, tts.precio_hora precio_hora, ".
				 "departamento.nombre nombre_departamento, pais.nombre nombre_pais ".
				 "from ". Tecnico_tipo_servicio_model::TABLA ." tts left join ". 
				 Usuario_model::TABLA ." tecnico on tecnico.id = tts.tecnico_fk left join " .
				 Tipo_servicio_model::TABLA ." tipo_servicio on tipo_servicio.id = tts.tipo_servicio_fk left join ".
				 Departamento_model::TABLA ." departamento on departamento.id = tecnico.departamento_fk left join ". 
				 Pais_model::TABLA ." pais on pais.id = tecnico.pais_fk ";

		$params = array();
		
		if($tipo_servicio_fk)
		{			
			$query .= " where tts.tipo_servicio_fk = ? ";
			array_push($params, $tipo_servicio_fk);
		}
			
		if($nombre_tecnico)
		{
			$query .= (sizeof($params) > 0 ? " and " : " where ") ."tecnico.nombres like ?";
			array_push($params, $nombre_tecnico);
		}
		
		return $this->db->rawQuery($query, (sizeof($params) > 0 ? $params : null));
	}
	
	/** Retorna todos los objetos servicio segun el tecnico pedido*/
	function getTipoServiciosporTecnico($id)
	{
		$this->db->where('tecnico_fk', $id);
		return $this->db->get(Tecnico_tipo_servicio_model::TABLA);
	}	
}